﻿using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace EzDesk.EzAppApi.Utility
{
    public partial class CacheableEzApiClient
    {
        const string MemberStringEveryone = "everyone";

        //        public static IEnumerable<Guid> GetAllUserIdsByMemberString(string memberString)
        //        {
        //            IList<Guid> userIds = new List<Guid>();
        //            if(string.IsNullOrEmpty(memberString))
        //            {
        //                return userIds;
        //            }
        //
        //            if(memberString == MemberStringEveryone)
        //            {
        //                return null;
        //            }
        //            var usersAndGroups = memberString.Split('|');
        //
        //            if(usersAndGroups.Length > 0)
        //            {
        //                if(!string.IsNullOrEmpty(usersAndGroups[0]))
        //                {
        //                    userIds = usersAndGroups[0].Split(',').Select(p => new Guid(p)).ToList();
        //                }
        //            }
        //
        //            if(usersAndGroups.Length > 1)
        //            {
        //                var groups = self.GetGroups(usersAndGroups[1]);
        //
        //                foreach(var group in groups)
        //                {
        //                    userIds = userIds.Union(
        //                        GetAllUserIdsByMemberString(group.MemberString)
        //                        )
        //                        .ToList();
        //                }
        //            }
        //            return userIds.Distinct().ToList();
        //        }
        //
        //        IList<string> GetGroupMemberStrings(Guid[] groupIdCollection)
        //        {
        //
        //        }


        private Guid[] ParseGuids(string idStrs)
        {
            return idStrs.Split(',').Select(ParseGuid).Where(p => p != Guid.Empty).ToArray();
        }

        private static Guid ParseGuid(string guidStr)
        {
            Guid result;
            return Guid.TryParse(guidStr, out result) ? result : Guid.Empty;
        }
    }
}
